package sv.com.renacempleo.dao.red.vinculacion;

import java.util.List;
import java.util.Vector;

import org.apache.commons.lang.StringUtils;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

import sv.com.renacempleo.dao.BaseDaoImpl;
import sv.com.renacempleo.dto.red.vinculacion.RedOfertaDemandante;
import sv.com.renacempleo.exception.WebException;
import sv.com.renacempleo.web.util.WebUtilidades;

public class RedOfertaDemandanteDaoImpl extends BaseDaoImpl implements RedOfertaDemandanteDao{

	@SuppressWarnings("unchecked")
	@Override
	public List<Object[]> findAllOfertasAsArray(Long redDemandanteFolio) throws WebException {
		Vector<Object> parameters = new Vector<Object>();
		String sqlQuery = WebUtilidades.getQueryByName("redOfertaDemandante.findAllOfertasDemandante");
		sqlQuery = StringUtils.replace(sqlQuery, "{folio}", redDemandanteFolio.toString());
		try {
			return (List<Object[]>) findBySQLQuery(sqlQuery, parameters.toArray());
		} catch (Exception e) {
			throw new WebException("Problemas al ejecutar la busqueda de empresas");
		}
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Object[]> findOfertasByRedDemandanteFolioAndRedOfertaId(
			Long redDemandanteFolio, Long redOfertaId) throws WebException {
		DetachedCriteria criteria = DetachedCriteria.forClass(RedOfertaDemandante.class);
		criteria.createAlias("redDemandante", "redDemandante");
		criteria.createAlias("redOferta", "redOferta");
		criteria.add(Restrictions.eq("redDemandante.redDemandanteFolio", redDemandanteFolio));
		criteria.add(Restrictions.eq("redOferta.redOfertaId", redOfertaId));
		return (List<Object[]>) findByCriteria(criteria);

	}

}
